/*******************************
             Set-up
*******************************/

var // npm dependencies
  extend = require("extend"),
  fs = require("fs"),
  path = require("path"),
  requireDotFile = require("require-dot-file"),
  // semantic.json defaults
  defaults = require("./defaults"),
  config = require("./project/config"),
  // Final config object
  gulpConfig = {},
  // semantic.json settings
  userConfig;

/*******************************
          User Config
*******************************/

try {
  // looks for config file across all parent directories
  userConfig = requireDotFile("semantic.json");
} catch (error) {
  if (error.code === "MODULE_NOT_FOUND") {
    console.error("No semantic.json config found");
  }
}

// extend user config with defaults
gulpConfig = !userConfig
  ? extend(true, {}, defaults)
  : extend(false, {}, defaults, userConfig);

/*******************************
       Add Derived Values
*******************************/

// adds calculated values
config.addDerivedValues(gulpConfig);

/*******************************
             Export
*******************************/

module.exports = gulpConfig;
